/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package rev1;

/**
 *
 * @author a9uszT
 */
public class Stemmer {

    private String kata;

    public Stemmer() {
    }

    public String hapusPartikel() {
        /*
         * partikel -kah, -lah , -pun
         */
        if (kata.endsWith("lah")) {
            kata = (kata.substring(0, kata.length() - 3));

        } else if (kata.endsWith("kah")) {
            kata = (kata.substring(0, kata.length() - 3));

        } else if (kata.endsWith("pun")) {
            kata = (kata.substring(0, kata.length() - 3));
        }
        return kata;
    }

    public String hapusPossesivePronoun() {
        /*
         * akhiran -ku, -mu , -nya
         */
        if (kata.endsWith("ku")) {
            kata = (kata.substring(0, kata.length() - 2));

        } else if (kata.endsWith("mu")) {
            kata = (kata.substring(0, kata.length() - 2));

        } else if (kata.endsWith("nya")) {
            kata = (kata.substring(0, kata.length() - 3));
        }
        return kata;
    }

    public String hapusAwalan() {
        /*awalan pertama*/
        hapusAwalanPertama();
        if (kata.equalsIgnoreCase(hapusAwalanPertama())) {
            hapusAkhiran();
            if (kata.equalsIgnoreCase(hapusAkhiran())) {
                hapusAwalanKedua();
            }

        }else{
            hapusAwalanKedua();
            hapusAkhiran();
        }

        return kata;
    }

    public String hapusAwalanPertama() {
        /*awalan pertama*/
        if (kata.startsWith("meng")) {
            kata = (kata.substring(4));
        } else if (kata.startsWith("meny")) {
            kata = ("s" + kata.substring(4));
        } else if (kata.startsWith("men")) {
            kata = (kata.substring(3));
        } else if (kata.startsWith("mem")) {
            kata = kata.substring(3);
        } else if (kata.startsWith("me")) {
            kata = kata.substring(2);
        } else if (kata.startsWith("peng")) {
            kata = kata.substring(4);
        } else if (kata.startsWith("peny")) {
            kata = "s" + kata.substring(4);
        } else if (kata.startsWith("pen")) {
            kata = kata.substring(3);
        } else if (kata.startsWith("pem")) {
            kata = kata.substring(3);
        } else if (kata.startsWith("di")) {
            kata = kata.substring(2);
        } else if (kata.startsWith("ter")) {
            kata = kata.substring(3);
        } else if (kata.startsWith("ke")) {
            kata = kata.substring(2);
        }
        return kata;
    }

    public String hapusAwalanKedua() {
        if (kata.startsWith("ber")) {
            kata = kata.substring(3);
        } else if (kata.startsWith("bel")) {
            kata = kata.substring(3);
        } else if (kata.startsWith("be")) {
            kata = kata.substring(2);
        } else if (kata.startsWith("per")) {
            kata = kata.substring(3);
        } else if (kata.startsWith("pel")) {
            kata = kata.substring(3);
        } else if (kata.startsWith("pe")) {
            kata = kata.substring(2);
        }

        return kata;
    }

    public String hapusAkhiran() {
        if (kata.endsWith("i")) {
            kata = kata.substring(0, kata.length() - 1);

        } else if (kata.endsWith("kan")) {
            kata = kata.substring(0, kata.length() - 3);

        } else if (kata.endsWith("an")) {
            kata = kata.substring(0, kata.length() - 2);

        }
        return kata;
    }

    public static void main(String[] args) {
        Stemmer st = new Stemmer();
        st.setKata("mengambilkan");
        System.out.println(st.getKata());
    }

    /**
     * @return the kata
     */
    public String getKata() {
        hapusPartikel();
        hapusPossesivePronoun();
        hapusAwalan();
        return kata;
    }

    /**
     * @param kata the kata to set
     */
    public void setKata(String kata) {
        this.kata = kata;
    }
}
